home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 32 / Amiga Format AFCD32 (Nov 1998, Issue 117).iso / -seriously_amiga- / programming / e / newgui / src / examples / all.e next >
Text File  |  1998-08-10  |  19KB  |  536 lines

  1. /*
  2.  *  Little Example for some of NewGUI`s Features...
  3.  *
  4.  *
  5.  *
  6.  */
  7.  
  8. OPT     LARGE
  9. OPT     OSVERSION = 37
  10. OPT     PREPROCESS
  11.  
  12. #define IFF_INTERN      = 1                     -> Don`t use them together! This will never ever run,
  13. ->#define USE_OWNTASK     = 1                     -> because the IFF-Loader needs to Open() the Prefs with a DOS
  14.                                                 -> Call (Open()) and this isn`t allowed in a seperate Task!!!
  15.  
  16. MODULE  'graphics/gfxmacros'
  17. MODULE  'graphics/rastport'
  18. MODULE  'intuition/intuition'
  19. MODULE  'libraries/gadtools'
  20. MODULE  'newgui/pl_scrolltext'
  21. MODULE  'newgui/pl_gauge'
  22. MODULE  'newgui/newgui'
  23. MODULE  'newgui/ng_showerror'
  24. MODULE  'utility/tagitem'
  25.  
  26. #ifdef USE_OWNTASK
  27.  MODULE 'newgui/ng_guitask'
  28. #endif
  29.  
  30. #ifdef IFF_INTERN
  31.  MODULE 'newgui/ng_prefshook_intern'
  32. #endif
  33. #ifndef IFF_INTERN
  34.  MODULE 'newgui/ng_prefshook_extern'
  35. #endif
  36.  
  37. ENUM    GUI_MAIN = 1,
  38.         GUI_FIRST,
  39.         GUI_FONT,
  40.         GUI_SCREENMODE,
  41.         GUI_MULTI,
  42.         GUI_GAUGE,
  43.         GUI_ABOUT
  44.  
  45. #ifdef USE_OWNTASK
  46.  DEF    info:PTR TO guitaskinfo                 -> Guitaskinfo
  47. #endif
  48.  
  49. DEF     gui:PTR TO guihandle,                   -> guihandle
  50.         screen=NIL,
  51.         menu=0,                                 -> GadTools-Menu
  52.         tickon=FALSE,                           -> Do we want to be reported on Intuiticks?
  53.         tick=TRUE,                              -> Bool for the Ticking-Procedure!
  54.         main_gui=TRUE,
  55.         scroll:PTR TO scrolltext,
  56.         gauge:PTR TO gauge,
  57.         iffhandle=NIL
  58.  
  59. PROC main()     HANDLE
  60.  makemenus()                                    -> Generate then menu
  61.   opengui()                                     -> Open the GUI
  62.  
  63. #ifdef USE_OWNTASK
  64.    dootherthings()
  65. #endif
  66. EXCEPT DO
  67. #ifdef USE_OWNTASK
  68.   closegui()
  69. #endif
  70.     IF gauge THEN END gauge                     -> End the gauge
  71.    IF scroll THEN END scroll                    -> End the scroll-plugin
  72.   IF exception THEN ng_showerror(exception)     -> Error-handling with external Modul-Code
  73.  CleanUp(exception)                             -> EXIT with exception as return-code
  74. ENDPROC
  75.  
  76. PROC makemenus()
  77.  menu:=[
  78.         NM_TITLE,       0,      'Project',      0,      0,0,0,
  79.         NM_ITEM,        0,      'New ...',     'n',     0,0,{new},
  80.         NM_ITEM,        0,      'Load ...',    'l',     NM_ITEMDISABLED,0,{test1},
  81.         NM_ITEM,        0,      'Save ...',    's',     NM_ITEMDISABLED,0,{test1},
  82.         NM_ITEM,        0,      NM_BARLABEL,    0,      0,0,0,
  83.         NM_ITEM,        0,      'About ...',   'a',     0,0,{about},
  84.         NM_ITEM,        0,      'Quit ...',    'q',     0,0,0,
  85.         NM_TITLE,       0,      'Tools',        0,      0,0,0,
  86.         NM_ITEM,        0,      'Block Main',  '1',     0,0,{block},
  87.         NM_ITEM,        0,      'Main',        '2',     NG_NM_CHECK AND NG_NM_CHECKED,0,{hide},  -> !!! Have a look at this 2 new Constands (my GadTools-Modul is missing them!)
  88.         NM_END,         0,      0,              0,      0,0,0]:newmenu
  89. ENDPROC
  90.  
  91. PROC opengui()
  92.  DEF    gui
  93.   gui:=[NG_WINDOWTITLE, 'NewGUI - Demo',        -> Title from the Window
  94.         NG_PREFSPROC,   {saveprefs},            -> Procedure to save (or show) the preferences for every Window
  95.         NG_CLONESCREEN, TRUE,                   -> Open a screen (Clone it from WB, but prefer NG_SCR_xxx-Tags!)
  96.         NG_SCR_TITLE,   'NewGUI - ALL',         -> The Title from our Screen
  97.         NG_SCR_PUBNAME, 'NEWGUI',               -> The Public-Screen-Name
  98.         NG_OPENPUBSCREEN,       TRUE,           -> If there already is an Pubscreen with that name, than use it!
  99.         NG_REXXNAME,    'NEWGUI',               -> Name for the ARexx-Port
  100.         NG_REXXPROC,    {rexxmsg},              -> Procedure to parse ARexx-Messages (Show AFC/Rexxer for details!)
  101.         NG_FILLHOOK,    {fillrect},             -> Procedure to fill the windows-back and/or groups
  102.         NG_MENU,        menu,                   -> The used menu-Bar
  103.         NG_GUIID,       GUI_MAIN,               -> Gui-ID
  104.         NG_GUI,                                 -> (Normally) GUI-Description
  105.                         NG_DUMMY,               -> But NG_DUMMY says that we want only a BackDrop-Window!
  106.         NG_NEXTGUI,                             -> PTR to the next Window-Description
  107. -> Main-Window
  108.        [NG_WINDOWTITLE, 'NewGUI - Demo',
  109.         NG_FILLHOOK,    {fillrect},
  110.         NG_USEMAINMENU, TRUE,
  111.         NG_USEMAINSCREEN, TRUE,                 -> This Window should use the Screen from the first GUI (BACKDROP)
  112. ->        NG_USEMAINFONT, TRUE,                   -> The font from the Main-GUI (BACKDROP) should be used!
  113.         NG_ONCLOSE,     {closeall},             -> This procedure is called if this window is closed
  114.         NG_AUTOOPEN,    TRUE,                   -> Says that this window should be already open at the beginning
  115.         NG_GUIID,       GUI_FIRST,              -> Gui-ID
  116.         NG_GUI,                                 -> Gui-Description!
  117.  
  118.                 [ROWS,
  119.                 [BEVEL,
  120.                 [FILLGROUP1,
  121.                 [ROWS,
  122.                         [TEXT,'Main-Window','NewGUI-Example:',TRUE,3]
  123.                 ]]],
  124.                 [BEVELR,
  125.                 [FILLGROUP1,
  126.                 [ROWS,
  127.                         [SBUTTON,{font},'Font ...'],
  128.                         [SBUTTON,{screenmode},'Screenmode ...'],
  129.                         [SBUTTON,{ticker},'Ticker on/off'],
  130.                         [SBUTTON,{showgauge},'Gauge...'],
  131.                         [SBUTTON,{about},'About ...']
  132.                 ]]],
  133.                 [BAR],
  134.                 [BEVELR,
  135.                 [FILLGROUP1,
  136.                 [EQCOLS,
  137.                         [SBUTTON,{closechilds},'Close all Windows'],
  138.                         [SBUTTON,{new},'New Fenster'],
  139.                         [SBUTTON,{prefs},'Show Prefs'],
  140.                         [SBUTTON,{block},'Block Main'],
  141.                         [SBUTTON,{hide},'Hide Main']]]]],
  142.         NG_NEXTGUI,     
  143. -> FONT-Window
  144.        [NG_WINDOWTITLE, 'Font-Demo',
  145.         NG_FILLHOOK,    {fillrect},
  146.         NG_USEMAINMENU, TRUE,
  147. ->        NG_USEMAINFONT, TRUE,
  148.         NG_USEMAINSCREEN,TRUE,
  149.         NG_GUIID,       GUI_FONT,
  150.         NG_GUI,
  151.                 [EQROWS,
  152.                         [TEXT,'Selected Fonts',NIL,FALSE,3],
  153.                 [BEVELR,
  154.                 [EQROWS,
  155.                         [TEXT,'xentiny 8','Workbench Icon Text:',FALSE,3],
  156.                         [TEXT,'end 10','System Default Text:',FALSE,3],
  157.                         [TEXT,'except 12','Screen text:',FALSE,3]
  158.                 ]],
  159.                         [SBUTTON,0,'Select Workbench Icon Text...'],
  160.                         [SBUTTON,0,'Select System Default Text...'],
  161.                         [SBUTTON,0,'Select Screen text...'],
  162.                 [BAR],
  163.                 [COLS,
  164.                         [BUTTON,0,'Save'],
  165.                 [SPACEH],
  166.                         [BUTTON,0,'Use'],
  167.                 [SPACEH],
  168.                         [BUTTON,0,'Cancel']
  169.                 ]],
  170.         NG_NEXTGUI,     
  171. -> Screenmode-Window
  172.        [NG_WINDOWTITLE, 'Screenmode-Demo',
  173.         NG_USEMAINSCREEN,TRUE,
  174. ->        NG_USEMAINFONT, TRUE,
  175.         NG_USEMAINMENU, TRUE,
  176.         NG_FILLHOOK,    {fillrect},
  177.         NG_GUIID,       GUI_SCREENMODE,
  178.         NG_GUI,
  179.                 [EQROWS,
  180.                 [COLS,
  181.                 [EQROWS,
  182.                         [LISTV,0,'Display Mode',10,4,NIL,TRUE,0,0],
  183.                 [COLS,
  184.                 [EQROWS,
  185.                         [INTEGER,0,'Width:',640,5],
  186.                         [INTEGER,0,'Height:',512,5]
  187.                 ],
  188.                 [ROWS,
  189.                         [CHECK,0,'Default',TRUE,FALSE],
  190.                         [CHECK,0,'Default',TRUE,FALSE]
  191.                 ]],
  192.                         [SLIDE,0,'Colors:',FALSE,1,8,3,5,''],
  193.                         [CHECK,0,'AutoScroll:',TRUE,TRUE]
  194.                 ],
  195.                 [BEVELR,
  196.                 [EQROWS,
  197.                         [TEXT,'688x539','Visible Size:',FALSE,3],
  198.                         [TEXT,'640x200','Minimum Size:',FALSE,3],
  199.                         [TEXT,'16368x16384','Maximum Size:',FALSE,3],
  200.                         [TEXT,'256','Maximum Colors:',FALSE,3],
  201.                 [SPACE]
  202.                 ]]],
  203.                 [BAR],
  204.                 [COLS,
  205.                         [BUTTON,0,'Save'],
  206.                 [SPACEH],
  207.                         [BUTTON,0,'Use'],
  208.                 [SPACEH],
  209.                         [BUTTON,0,'Cancel']
  210.                 ]],
  211.         NG_NEXTGUI,     
  212. ->
  213.        [NG_WINDOWTITLE, 'NewGUI - Demo',
  214.         NG_USEMAINSCREEN,TRUE,
  215. ->        NG_USEMAINFONT, TRUE,
  216.         NG_USEMAINMENU, TRUE,
  217.         NG_FILLHOOK,    {fillrect},
  218.         NG_GUIID,       GUI_MULTI,
  219.         NG_DOUBLEGUI,   TRUE,
  220.         NG_GUI,
  221.                 [ROWS,
  222.                 [DBEVELR,
  223.                 [FILLGROUP1,
  224.                 [ROWS,
  225.                         [TEXT,'Another Window!','NewGUI-Example:',TRUE,3]
  226.                 ]]],
  227.                 [BAR],
  228.                 [BEVELR,
  229.                 [FILLGROUP1,
  230.                 [EQCOLS,
  231.                         [SBUTTON,{change},'Change'],
  232.                         [SBUTTON,{block},'Block Main'],
  233.                         [SBUTTON,{hide},'Hide Main']]]]],
  234.         NG_NEXTGUI,     
  235. ->
  236.        [NG_WINDOWTITLE, 'NewGUI - Demo',
  237.         NG_USEMAINSCREEN,TRUE,
  238. ->        NG_USEMAINFONT, TRUE,
  239.         NG_USEMAINMENU, TRUE,
  240.         NG_FILLHOOK,    {fillrect},
  241.         NG_GUIID,       GUI_GAUGE,
  242.         NG_GUI,
  243.                 [ROWS,
  244.                 [BEVELR,
  245.                 [FILLGROUP1,
  246.                 [EQROWS,
  247.                         [GAUGE,0,NEW gauge.gauge(3,2,1,GAUGE_HOR,50,TRUE)],
  248.                         [SLIDE,{setgauge},'     ',FALSE,0,100,50,2,'%3ld']
  249.                 ]]],
  250.                 [BEVELR,
  251.                 [FILLGROUP1,
  252.                 [EQCOLS,
  253.                 [SPACEH],
  254.                         [SBUTTON,{hide},'Hide Main'],
  255.                 [SPACEH]
  256.                 ]]]
  257.                 ],
  258.         NG_NEXTGUI,     
  259. ->
  260.        [NG_WINDOWTITLE, 'About NewGUI',
  261.         NG_USEMAINSCREEN,TRUE,
  262.         NG_USEMAINMENU, TRUE,
  263. ->        NG_FONT_NAME,   'Webhead.font',         -> Doesn`t actually work with ng_guitask() !!!
  264. ->        NG_FONT_SIZE,   21,                     -> I have to look why  it will hang the system !!
  265.         NG_FILLHOOK,    {fillrect},
  266.         NG_GUIID,       GUI_ABOUT,
  267.         NG_GUI,
  268.                 [ROWS,
  269.                 [DBEVELR,
  270.                 [FILLGROUP2,
  271.                 [EQROWS,
  272.                         [TEXT,'NewGUI','About',FALSE,3],
  273.                         [TEXT,' ',' ',FALSE,3]
  274.                 ]]],
  275.                 [BEVELR,
  276.                 [FILLGROUP1,
  277.                 [EQROWS,
  278.                         [SCROLLTEXT,0,NEW scroll.scrolltext([
  279.         1,SCRTXT_BAR,' ',
  280.         2,SCRTXT_CENTER,'NewGUI',
  281.         1,SCRTXT_CENTER,'was developed by',
  282.         2,SCRTXT_CENTER,'THE DARK FRONTIER Softwareentwicklungen',
  283.         1,SCRTXT_CENTER,'(© 1994-98)',
  284.         1,SCRTXT_BAR,' ',
  285.         1,SCRTXT_LEFT,'Address:',
  286.         1,SCRTXT_CENTER,'Am Hofgraben 2',
  287.         1,SCRTXT_CENTER,'67378 Zeiskam',
  288.         1,SCRTXT_LEFT,'FAX:++49(0)7274-8774',
  289.         2,SCRTXT_LEFT,'Email: frontier@starbase.inka.de',
  290.         2,SCRTXT_LEFT,'WWW  : under development...',
  291.         1,SCRTXT_BAR,' ',
  292.         0,NIL],2,100,2)]
  293.                 ]]],
  294.                 [BAR],
  295.                 [BEVELR,
  296.                 [FILLGROUP1,
  297.                 [EQCOLS,
  298.                         [SBUTTON,0,'OK']]]]],
  299. ->
  300.         NIL,NIL],
  301. ->
  302.         NIL,NIL],
  303. ->
  304.         NIL,NIL],
  305. ->
  306.         NIL,NIL],
  307. ->
  308.         NIL,NIL],
  309. ->
  310.         NIL,NIL],
  311. ->
  312.         NIL,NIL]
  313.  
  314. #ifndef USE_OWNTASK 
  315.     newguiA(gui,{guiproc})
  316. #endif
  317.  
  318. #ifdef USE_OWNTASK
  319.   info:=ng_newtask(gui,NG_STACK_SIZE)
  320.    Wait(info.sig)
  321.     gui:=info.gui
  322.      screen:=ng_getattrsA([
  323.         NG_GUI,         gui,
  324.         NG_GETSCREEN,   TRUE,
  325.         NIL,            NIL])
  326. #endif
  327.  
  328. ENDPROC
  329.  
  330. #ifndef USE_OWNTASK
  331. PROC guiproc(gh,scr) IS screen:=scr,gui:=gh
  332. #endif
  333.  
  334. #ifdef USE_OWNTASK
  335. PROC dootherthings()
  336.  DEF    a=0
  337.   WHILE (ng_checkgui(info)=FALSE)
  338.    Delay(1)
  339.     WriteF('\d ',a)
  340.    a++
  341.   ENDWHILE
  342. ENDPROC
  343. #endif
  344.  
  345. #ifdef USE_OWNTASK
  346. PROC closegui()
  347.  ng_endtask(info)
  348. ENDPROC
  349. #endif
  350.  
  351. PROC fillrect(rp,x,y,width,height,type)
  352.  DEF    oldbpen=0,
  353.         oldapen=1
  354.   SELECT        type
  355.         CASE    NG_FILL_WINDOW                          -> Window-Filling (Back)
  356.          oldbpen:=SetBPen(rp,0)                         -> Set Backpen to gray
  357.           oldapen:=SetAPen(rp,3)                        -> Set Frontpen to blue
  358.            SetAfPt(rp,[$AAAA,$5555]:INT,1)              -> Set Pattern (ATTENTION! Macro-Definition in gfxmacros.m, this need OPT PREPROCESS!!!)
  359.             RectFill(rp,x,y,width,height)               -> Now fill the Region!
  360.            SetBPen(rp,oldbpen)                          -> Set the Backpen to the old value
  361.           SetAPen(rp,oldapen)                           -> Set the Frontpen to the old value
  362.         CASE    FILLGROUP1                              -> Fill the Group 1
  363.          oldbpen:=SetBPen(rp,0)                         -> Set BackPen to gray
  364.           oldapen:=SetAPen(rp,0)                        -> Set Frontpen to gray
  365.            SetAfPt(rp,[$FFFF,$FFFF]:INT,1)              -> ...
  366.             RectFill(rp,x,y,width,height)               -> ...
  367.            SetBPen(rp,oldbpen)                          -> ...
  368.           SetAPen(rp,oldapen)                           -> ...
  369.         CASE    FILLGROUP2                              -> Fill the Group 2
  370.          oldbpen:=SetBPen(rp,3)                         -> Set the Backpen to blue
  371.           oldapen:=SetAPen(rp,2)                        -> Set the Frontpen to white
  372.            SetAfPt(rp,[$AAAA,$5555]:INT,1)              -> ...
  373.             RectFill(rp,x,y,width,height)               -> ...
  374.            SetBPen(rp,oldbpen)                          -> ...
  375.           SetAPen(rp,oldapen)                           -> ...
  376.    ENDSELECT
  377. ENDPROC
  378.  
  379. PROC saveprefs(screen,id,x,y,width,height,open)
  380.  iffhandle:=ng_prefsproc('ram:all.ngp',GUI_ABOUT,iffhandle,screen,id,x,y,width,height,open)
  381. ENDPROC
  382.  
  383. PROC prefs()                                            -> Save (show) the Prefs
  384.  ng_setattrsA([
  385.         NG_GUI,         gui,
  386.         NG_SAVEPREFS,   TRUE,
  387.         NIL,            NIL])
  388. ENDPROC
  389.  
  390. PROC font()                                             -> Open the Font-Window
  391.  ng_setattrsA([
  392.         NG_GUI,         gui,
  393.         NG_CHANGEGUI,   NG_OPENGUI,
  394.         NG_GUIID,       GUI_FONT,
  395.         NIL,            NIL])
  396. ENDPROC
  397.  
  398. PROC screenmode()                                       -> Open the Screenmode-Window
  399.  ng_setattrsA([
  400.         NG_GUI,         gui,
  401.         NG_CHANGEGUI,   NG_OPENGUI,
  402.         NG_GUIID,       GUI_SCREENMODE,
  403.         NIL,            NIL])
  404. ENDPROC
  405.  
  406. PROC closechilds()                                      -> Close all Windows (NOT the first = BACKDROP!)
  407.  ng_setattrsA([
  408.         NG_GUI,         gui,
  409.         NG_CHANGEGUI,   NG_CLOSECHILDS,
  410.         NIL,            NIL])
  411. ENDPROC
  412.  
  413. PROC new()                                              -> Open the "new"-Window...
  414.  ng_setattrsA([
  415.         NG_GUI,         gui,
  416.         NG_CHANGEGUI,   NG_OPENGUI,
  417.         NG_GUIID,       GUI_MULTI,
  418.         NIL,            NIL])
  419. ENDPROC
  420.  
  421. PROC showgauge()
  422.  ng_setattrsA([
  423.         NG_GUI,         gui,
  424.         NG_CHANGEGUI,   NG_OPENGUI,
  425.         NG_GUIID,       GUI_GAUGE,
  426.         NIL,            NIL])
  427. ENDPROC
  428.  
  429. PROC closeall() IS 0                                    -> 0 means that all should be closed!
  430.  
  431. PROC setgauge(x,y)      IS gauge.set(y)                                      -> Set the gauge-Value to the Sliders-State
  432.  
  433. PROC change()                                           -> Change the Windows-Gui-Description
  434.  ng_setattrsA([NG_GUI,gui,
  435.         NG_GUIID,       GUI_MULTI,
  436.         NG_CHANGEGUI,   NG_NEWGUI,
  437.         NG_NEWDATA,
  438.                 [ROWS,
  439.                 [BEVELR,
  440.                 [FILLGROUP1,
  441.                 [EQCOLS,
  442.                         [SBUTTON,{block},'Block Main'],
  443.                         [SBUTTON,{hide},'Hide Main']]]],
  444.                 [DBEVELR,
  445.                 [FILLGROUP1,
  446.                 [ROWS,
  447.                         [TEXT,'Another (changed) Window','NewGUI-Example:',TRUE,3]
  448.                 ]]],
  449.                 [BAR]
  450.                 ]
  451.          ,NIL,NIL])
  452. ENDPROC
  453.  
  454. PROC about()                                            -> Open the About-Window
  455.  ng_setattrsA([
  456.         NG_GUI,         gui,
  457.         NG_CHANGEGUI,   NG_OPENGUI,
  458.         NG_GUIID,       GUI_ABOUT,
  459.         NIL,            NIL])
  460. ENDPROC
  461.  
  462. PROC test1()                                            -> Outputs a test-Message
  463.  WriteF('Test!\n')
  464. ENDPROC
  465.  
  466. PROC block()                                            -> Blocking the main-window
  467.  DEF    a
  468.   WriteF('\nBlocking Main-Window: ')
  469.    ng_setattrsA([
  470.         NG_GUI,         gui,
  471.         NG_CHANGEGUI,   NG_BLOCKGUI,
  472.         NG_GUIID,       GUI_FIRST,
  473.         NIL,    NIL])
  474.     FOR a:=0 TO 50                              -> 
  475.      Delay(1)                                   -> Do wait some time (and let other tasks have our cpu-time!)
  476.       WriteF('.')
  477.      guimessage(gui)                            -> Handle all gui-Messages (like resizing ect...)
  478.     ENDFOR
  479.    ng_setattrsA([
  480.         NG_GUI,         gui,
  481.         NG_CHANGEGUI,   NG_UNBLOCKGUI,
  482.         NG_GUIID,       GUI_FIRST,
  483.         NIL,    NIL])
  484. ENDPROC
  485.  
  486. PROC hide()                                     -> Hide the main-Window
  487.  IF main_gui=TRUE
  488.   ng_setattrsA([
  489.         NG_GUI,         gui,
  490.         NG_CHANGEGUI,   NG_CLOSEGUI,
  491.         NG_GUIID,       GUI_FIRST,
  492.         NIL,    NIL])
  493.   main_gui:=FALSE
  494.  ELSE
  495.   appear()
  496.   main_gui:=TRUE
  497.  ENDIF
  498. ENDPROC
  499.  
  500. PROC appear()                                   -> Let the main-window appearing again!
  501.  ng_setattrsA([
  502.         NG_GUI,         gui,
  503.         NG_CHANGEGUI,   NG_OPENGUI,
  504.         NG_GUIID,       GUI_FIRST,
  505.         NIL,    NIL])
  506. ENDPROC
  507.  
  508. PROC rexxmsg(s,mes=NIL)                         -> Parse all arexx-Message 
  509.  WriteF('Rexx-Msg: "\s"\n',s)                   -> Outputs the receives String into CONsole
  510.  
  511.   mes:=NIL                                      -> Unneccesarry!
  512. ENDPROC  StrCmp('QUIT',s),0,'Reply-Message'     -> return-Values (look under AFC/Rexxer for details!)
  513.  
  514. PROC ticker()                                   -> Turns the Ticker-Procedure on and of!
  515.  IF tickon=TRUE
  516.    ng_setattrsA([NG_GUI,gui,
  517.         NG_CHANGETICKER,TRUE,NIL,NIL])          -> TRUE is necessary because FALSE means that the Tag NG_CHANGETICKER isn`t given (through GetTagData()!)
  518.   tickon:=FALSE
  519.  ELSE
  520.    ng_setattrsA([NG_GUI,gui,
  521.         NG_CHANGETICKER,{tickmsg},NIL,NIL])
  522.   tickon:=TRUE
  523.  ENDIF
  524. ENDPROC
  525.  
  526. PROC tickmsg()
  527.  IF tick=TRUE
  528.   WriteF('Tick - ')
  529.   tick:=FALSE
  530.  ELSE
  531.   WriteF('Tack!\n')
  532.   tick:=TRUE
  533.  ENDIF
  534. ENDPROC
  535.  
  536.